//package com.ljx.javaredis.service.impl;
//
//import com.ljx.javaredis.dao.DeptDao;
//import com.ljx.javaredis.entiey.Dept;
//import com.ljx.javaredis.service.DeptService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.data.redis.core.ValueOperations;
//import org.springframework.stereotype.Service;
//
//import javax.annotation.Resource;
//import java.util.concurrent.TimeUnit;
//
///**
// * redis缓存模式
// * @author LJX
// * @Description: TODO
// * @Date: 2022/12/7 15:58
// * @Version 1.0
// */
//@Service
//public class DeptServiceImpl implements DeptService {
//	@Resource
//	private DeptDao deptDao;
//
//	@Autowired
//	private RedisTemplate<String,Object> redisTemplate;
//
//	@Override
//	public Dept findById(int deptno) {
//		// 获取string类型的操作类对象
//		ValueOperations<String, Object> forValue = redisTemplate.opsForValue();
//		// 查询缓存key的名称 一般key的格式为:[模块名称::类名::唯一标识]
//		Object o = forValue.get("redis::dept" + deptno);
//		// 判断缓存中是否有key(如果o不等于空证明缓存中有key,)
//		if(o != null){
//			return (Dept) o;
//		}
//		// 走到此处这证明缓存中没有相应的key与之对应要去数据库去查找
//		Dept dept = deptDao.selectById(deptno);
//		// 判断dept是否为空，如果不为空，那么我们将其放入缓存中，以便下次能够命中
//		if(dept !=null){
//			forValue.set("redis::dept"+deptno,dept,3600, TimeUnit.SECONDS);
//		}
//		return dept;
//	}
//
//	@Override
//	public int deleteById(int deptno) {
//		// 先删除缓存中的数据再删除数据库中的key
//		redisTemplate.delete("redis::dept"+deptno);
//		int i = deptDao.deleteById(deptno);
//		return i;
//	}
//
//	@Override
//	public int insetToDept(Dept dept) {
//		// 向数据表中添加数据
//		return deptDao.insert(dept);
//	}
//
//	@Override
//	public int updateById(Dept dept) {
//		// 先修改数据库，再修改缓存中的数据
//		int i = deptDao.updateById(dept);
//		ValueOperations<String, Object> forValue = redisTemplate.opsForValue();
//		forValue.set("redis::dept"+dept.getDeptno(),dept,3600,TimeUnit.SECONDS);
//		return i;
//	}
//}
